package Model;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.*; 
import org.hibernate.annotations.FetchMode;
import org.hibernate.annotations.Cascade; 
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;

@Entity
@Table(name="associacao")
@SuppressWarnings ("serial")
public class Associacao implements Serializable
{
    @Id
    @SequenceGenerator( name = "cod_associacao", sequenceName = "cod_associacao_seq", allocationSize = 1 )   
    @GeneratedValue( strategy = GenerationType.SEQUENCE, generator = "cod_associacao" )   
    @Column (name = "cod_associacao", insertable = false)
    private int codAssociacao;

    @ManyToOne(fetch = FetchType.EAGER) 
    @JoinColumn(name="cod_endereco", insertable=true, updatable=true) 
    @Fetch(FetchMode.JOIN) 
    @Cascade(CascadeType.ALL)
    private Endereco endereco;

    @Column (name = "nome")
    private String nome;
    @Column (name = "cnpj")
    private String cnpj;
    @Column (name = "insc_estadual")
    private String inscEstadual;
    @Column (name = "razao_social")
    private String razaoSocial;
    @Column (name = "telefone_fax")
    private String telefoneFax;
    @Column (name = "telefone")
    private String telefone;
    @OneToMany(mappedBy="associacao", fetch = FetchType.LAZY) 
    @Cascade(CascadeType.ALL)
    private Collection <Associado> associado;

    //Construtores
    //Construtor padrao
    public Associacao() {
       
    }
    //Construtor com parametros
    public Associacao (int codAssociacao, Endereco endereco, String nome,String cnpj,String inscEstadual, String razaoSocial, String telefone, String telefoneFax)
    {           
        this.codAssociacao = codAssociacao;
        this.endereco = endereco;
        this.nome = nome;
        this.cnpj = cnpj;
        this.inscEstadual = inscEstadual;
        this.razaoSocial = razaoSocial;
        this.telefone = telefone;
        this.telefoneFax = telefoneFax;
    }

   //Metodos get e set
   public String getRazaoSocial() {
      return razaoSocial;
   }
   public void setRazaoSocial(String razaoSocial) {
      this.razaoSocial = razaoSocial;
   }
   
    public int getCodAssociacao() {
        return codAssociacao;
    }
    public void setCodAssociacao(int codAssociacao) {
        this.codAssociacao = codAssociacao;
    }

    public Endereco getEndereco() {
        return endereco;
    }
    public void setEndereco(Endereco endereco) {
        this.endereco = endereco;
    }

    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getCnpj() {
        return cnpj;
    }
    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }

    public String getInscEstadual() {
        return inscEstadual;
    }
    public void setInscEstadual(String inscEstadual) {
        this.inscEstadual = inscEstadual;
    }

    public String getTelefone() {
        return telefone;
    }
    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getTelefoneFax() {
        return telefoneFax;
    }
    public void setTelefoneFax(String telefoneFax) {
        this.telefoneFax = telefoneFax;
    }

    public Collection<Associado> getAssociado() {
        return associado;
    }
    public void setAssociado(Collection<Associado> associado) {
        this.associado = associado;
    }
}